#include<string>
#include<iostream>
#include<list>
#include<vector>
#include<algorithm>

using namespace std;

//int main() 
//{
//  string str1("hello world");
//  cout << str1 << endl; 
//  for(int i = 0; i < str1.size(); i++)
//  {
//    cout << str1[i];
//  }
//   cout << endl;
// 
//  string::iterator it = str1.begin();
//  
//  while(it != str1.end())
//  {
//    cout << *it;
//    it++;
//  }
//  cout << endl;
// 
//  for(int i = 0; i < str1.size(); i++)
//  {
//    str1[i]++;
//  }
//  
//  cout << str1 << endl;
//  
//  //范围for的底层用的是迭代器
//  for(auto& ch : str1)
//  {
//    ch++;
//  }
// 
//  for(auto ch : str1)
//  {
//    cout << ch << "";
//  }
//  cout << endl;
// 
//  //容器基本都支持迭代器，且用法是类似的  
//  vector<int> v;
//  v.push_back(2);
//  v.push_back(0);
//  v.push_back(1);
//  v.push_back(3);
//  
//  vector<int>::iterator vit = v.begin();
//  while(vit != v.end())
//  {
//    cout << (*vit) << " ";
//    vit++;
//  }
//  cout << endl;
//  
// 
//  list<int> lt;
//  lt.push_back(2);
//  lt.push_back(1);
//  lt.push_back(6);
//  lt.push_back(2);
//  
//  list<int>::iterator vlt = lt.begin();
//  while(vlt != lt.end())
//  {
//    cout << (*vlt) << " ";
//    vlt++;
//  }
//  cout << endl;
//  
//  reverse(v.begin(),v.end());
//  reverse(lt.begin(),lt.end());
// 
//  for(auto e : v)
//  {
//    cout << e << " ";
//  }
//  cout << endl;
// 
//  for(auto e : lt)
//  {
//    cout << e << " ";
//  }
//  cout << endl;
// 
//  return 0;
// }

//int main()
//{
//  string s1("hello Linux");
//  auto it = s1.rbegin();
//  while(it!=s1.rend())
//  {
//    cout << (*it) << " ";
//    ++it;
//  }
//  
//  cout << endl;
//  
//  return 0;
//}

int main()
{
  string str("hello Linux");

  size_t old = str.capacity();
  cout << old << endl;
  for(int i = 0; i < 100; i++)
  {
    str += 'x';
    if(str.capacity() == str.size())
    {
      cout << "扩容后：" << str.capacity() << endl;  
    }
  }
  cout << endl;
  
  cout << str.capacity() << endl;
  cout << str.size() << endl;
  str.clear(); 
  cout << str.capacity() << endl;
  cout << str.size() << endl;
  return 0;
}
